\hypertarget{hash__table_8h}{
\section{Referência ao ficheiro hash\_\-table.h}
\label{hash__table_8h}\index{hash\_\-table.h@{hash\_\-table.h}}
}
{\tt \#include $<$pthread.h$>$}\par
{\tt \#include \char`\"{}list.h\char`\"{}}\par
{\tt \#include \char`\"{}hash\_\-function.h\char`\"{}}\par
\subsection*{Estruturas de Dados}
\begin{CompactItemize}
\item 
struct \hyperlink{structhash__entry}{hash\_\-entry}
\item 
struct \hyperlink{structhash__table}{hash\_\-table}
\end{CompactItemize}
\subsection*{Macros}
\begin{CompactItemize}
\item 
\#define \hyperlink{hash__table_8h_df4781875a3f7c7d3cd5b90f736a7e26}{BUCKET\_\-BITLEN}~32
\item 
\#define \hyperlink{hash__table_8h_6d96b1b753cb4969aaa7f782021bcf5b}{hash\_\-entry}(ptr, type, member)~((type $\ast$)((char $\ast$)(ptr)-(unsigned long)(\&((type $\ast$)0) $\rightarrow$ member)))
\begin{CompactList}\small\item\em \hyperlink{structhash__entry}{hash\_\-entry} - get the user data for this entry : the \&struct \hyperlink{structhash__entry}{hash\_\-entry} pointer : the type of the user data (e.g. \item\end{CompactList}\item 
\#define \hyperlink{hash__table_8h_ca4be66f0e2f9faa7c47324d54a7c172}{hash\_\-table\_\-for\_\-each}(hentry, htable)
\item 
\#define \hyperlink{hash__table_8h_98de86153912bbf3fa3c88cf06be211e}{hash\_\-table\_\-for\_\-each\_\-safe}(hentry, htable, pos, hti)
\end{CompactItemize}
\subsection*{Definições de tipos}
\begin{CompactItemize}
\item 
typedef int($\ast$ \hyperlink{hash__table_8h_3d5ec14056d7480c722de378cf762198}{keycmp\_\-ptr} )(const void $\ast$, const void $\ast$, size\_\-t)
\end{CompactItemize}
\subsection*{Funções}
\begin{CompactItemize}
\item 
static int \hyperlink{hash__table_8h_e9600b4d6f7ce6395d53b2858953c76f}{hash\_\-table\_\-bucket\_\-lock} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t, unsigned int n)
\item 
static int \hyperlink{hash__table_8h_48f875515f654fd00e016384de1f14d9}{hash\_\-table\_\-bucket\_\-unlock} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t, unsigned int n)
\item 
static int \hyperlink{hash__table_8h_6ee43184883ee97c4f19b4e85549b5dc}{hash\_\-table\_\-lock} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t)
\item 
static int \hyperlink{hash__table_8h_21dc15c7b9538d15e19afffca43d9053}{hash\_\-table\_\-unlock} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t)
\item 
static int \hyperlink{hash__table_8h_2c3068f078190c2b4d9416576a30f548}{hash\_\-table\_\-bucket\_\-locked} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t, unsigned int n)
\item 
static int \hyperlink{hash__table_8h_0ddc013a986dacb55b81875438bc2e0a}{hash\_\-table\_\-locked} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t)
\item 
static int \hyperlink{hash__table_8h_b80477ad6e8ad63b4ea83252c67392f1}{hash\_\-table\_\-hash\_\-code} (const struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t, const char $\ast$key, unsigned int len)
\item 
static int \hyperlink{hash__table_8h_fb170aef9a24093e681f4f136f5fc404}{hash\_\-table\_\-hash\_\-code\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$t, const char $\ast$key, unsigned int len)
\item 
static int \hyperlink{hash__table_8h_a1824f6d7b4c63926ccdfd86eb020c08}{hash\_\-entry\_\-init} (struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e, const unsigned char $\ast$str, unsigned int len)
\item 
static void \hyperlink{hash__table_8h_2b79db78da4c673932780dc1178ae7d8}{hash\_\-entry\_\-finit} (struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e)
\item 
static int \hyperlink{hash__table_8h_7e37848bc7e0e4fe223f633949331aa4}{hash\_\-table\_\-init} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, unsigned int b, \hyperlink{hash__table_8h_3d5ec14056d7480c722de378cf762198}{keycmp\_\-ptr} keycmp)
\item 
static void \hyperlink{hash__table_8h_506d39e2faf00001f5354fd67ffaf590}{hash\_\-table\_\-finit} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h)
\item 
void \hyperlink{hash__table_8h_b169c085175842723f0b8ef86d138f0c}{hash\_\-table\_\-insert} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e, const unsigned char $\ast$key, unsigned int len)
\item 
void \hyperlink{hash__table_8h_fce52c7df56ac3debdbeb4cdd767823f}{hash\_\-table\_\-insert\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e, const unsigned char $\ast$key, unsigned int len)
\item 
struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_26234bcfb00e679df2eb4b8e1476a9d5}{hash\_\-table\_\-lookup\_\-key} (const struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const unsigned char $\ast$str, unsigned int len)
\item 
struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_c20b239fac318b4a3f07951f67443485}{hash\_\-table\_\-lookup\_\-key\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const unsigned char $\ast$str, unsigned int len)
\item 
static struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_251fb227e81f38d9c3526696e760ca31}{hash\_\-table\_\-lookup\_\-hash\_\-entry} (const struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e)
\item 
static struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_652be46a5fbf96645b384492f8c04644}{hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e)
\item 
struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_41c85ba1ce95224217a063dc322f815c}{hash\_\-table\_\-del\_\-key} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const char $\ast$str, unsigned int len)
\item 
struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_700e46956ce396aebc18e2dc902d072a}{hash\_\-table\_\-del\_\-key\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, const char $\ast$str, unsigned int len)
\item 
static struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_3577eebac3c7b1338dc8b0bded0441ab}{hash\_\-table\_\-del\_\-hash\_\-entry} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e)
\item 
static struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$ \hyperlink{hash__table_8h_1e29b091dbabf9bdf181bd5ee7162162}{hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe} (struct \hyperlink{structhash__table}{hash\_\-table} $\ast$h, struct \hyperlink{structhash__entry}{hash\_\-entry} $\ast$e)
\end{CompactItemize}


\subsection{Documentação das macros}
\hypertarget{hash__table_8h_df4781875a3f7c7d3cd5b90f736a7e26}{
\index{hash\_\-table.h@{hash\_\-table.h}!BUCKET\_\-BITLEN@{BUCKET\_\-BITLEN}}
\index{BUCKET\_\-BITLEN@{BUCKET\_\-BITLEN}!hash_table.h@{hash\_\-table.h}}
\subsubsection[BUCKET\_\-BITLEN]{\setlength{\rightskip}{0pt plus 5cm}\#define BUCKET\_\-BITLEN~32}}
\label{hash__table_8h_df4781875a3f7c7d3cd5b90f736a7e26}




Definido na linha 16 do ficheiro hash\_\-table.h.\hypertarget{hash__table_8h_6d96b1b753cb4969aaa7f782021bcf5b}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-entry@{hash\_\-entry}}
\index{hash\_\-entry@{hash\_\-entry}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-entry]{\setlength{\rightskip}{0pt plus 5cm}\#define {\bf hash\_\-entry}(ptr, \/  type, \/  member)~((type $\ast$)((char $\ast$)(ptr)-(unsigned long)(\&((type $\ast$)0) $\rightarrow$ member)))}}
\label{hash__table_8h_6d96b1b753cb4969aaa7f782021bcf5b}


\hyperlink{structhash__entry}{hash\_\-entry} - get the user data for this entry : the \&struct \hyperlink{structhash__entry}{hash\_\-entry} pointer : the type of the user data (e.g. 

struct my\_\-data) embedded in this entry : the name of the \hyperlink{structhash__entry}{hash\_\-entry} within the struct (e.g. entry) 

Definido na linha 337 do ficheiro hash\_\-table.h.

Referenciado por main().\hypertarget{hash__table_8h_ca4be66f0e2f9faa7c47324d54a7c172}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-for\_\-each@{hash\_\-table\_\-for\_\-each}}
\index{hash\_\-table\_\-for\_\-each@{hash\_\-table\_\-for\_\-each}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-for\_\-each]{\setlength{\rightskip}{0pt plus 5cm}\#define hash\_\-table\_\-for\_\-each(hentry, \/  htable)}}
\label{hash__table_8h_ca4be66f0e2f9faa7c47324d54a7c172}


\textbf{Valor:}

\begin{Code}\begin{verbatim}for     ((htable)->__ht_i=0; ((htable)->__ht_i < (htable)->buckets); ++((htable)->__ht_i))      \
                for(((htable)->pos= (htable)->table[(htable)->__ht_i].list.next);               \
                                ((htable)->pos != &((htable)->table[(htable)->__ht_i].list)) && \
                                ((hentry) = ((struct hash_entry *)((char *)((htable)->pos)-(unsigned long)(&((struct hash_entry *)0)->list))) );        \
                                (htable)->pos= (htable)->pos->next)
\end{verbatim}
\end{Code}


Definido na linha 344 do ficheiro hash\_\-table.h.

Referenciado por main().\hypertarget{hash__table_8h_98de86153912bbf3fa3c88cf06be211e}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-for\_\-each\_\-safe@{hash\_\-table\_\-for\_\-each\_\-safe}}
\index{hash\_\-table\_\-for\_\-each\_\-safe@{hash\_\-table\_\-for\_\-each\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-for\_\-each\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}\#define hash\_\-table\_\-for\_\-each\_\-safe(hentry, \/  htable, \/  pos, \/  hti)}}
\label{hash__table_8h_98de86153912bbf3fa3c88cf06be211e}


\textbf{Valor:}

\begin{Code}\begin{verbatim}for     ((hti)=0; ((hti) < (htable)->buckets); ++(hti)) \
                for(((pos)= (htable)->table[(hti)].list.next);          \
                                ((pos) != &((htable)->table[(hti)].list)) &&    \
                                ((hentry) = ((struct hash_entry *)((char *)((pos))-(unsigned long)(&((struct hash_entry *)0)->list))) );        \
                                (pos)= (pos)->next)
\end{verbatim}
\end{Code}


Definido na linha 357 do ficheiro hash\_\-table.h.

\subsection{Documentação dos tipos}
\hypertarget{hash__table_8h_3d5ec14056d7480c722de378cf762198}{
\index{hash\_\-table.h@{hash\_\-table.h}!keycmp\_\-ptr@{keycmp\_\-ptr}}
\index{keycmp\_\-ptr@{keycmp\_\-ptr}!hash_table.h@{hash\_\-table.h}}
\subsubsection[keycmp\_\-ptr]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ {\bf keycmp\_\-ptr})(const void $\ast$, const void $\ast$, size\_\-t)}}
\label{hash__table_8h_3d5ec14056d7480c722de378cf762198}




Definido na linha 18 do ficheiro hash\_\-table.h.

\subsection{Documentação das funções}
\hypertarget{hash__table_8h_2b79db78da4c673932780dc1178ae7d8}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-entry\_\-finit@{hash\_\-entry\_\-finit}}
\index{hash\_\-entry\_\-finit@{hash\_\-entry\_\-finit}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-entry\_\-finit]{\setlength{\rightskip}{0pt plus 5cm}static void hash\_\-entry\_\-finit (struct {\bf hash\_\-entry} $\ast$ {\em e})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_2b79db78da4c673932780dc1178ae7d8}




Definido na linha 119 do ficheiro hash\_\-table.h.

Referências hash\_\-entry::key e hash\_\-entry::keylen.\hypertarget{hash__table_8h_a1824f6d7b4c63926ccdfd86eb020c08}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-entry\_\-init@{hash\_\-entry\_\-init}}
\index{hash\_\-entry\_\-init@{hash\_\-entry\_\-init}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-entry\_\-init]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-entry\_\-init (struct {\bf hash\_\-entry} $\ast$ {\em e}, \/  const unsigned char $\ast$ {\em str}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_a1824f6d7b4c63926ccdfd86eb020c08}




Definido na linha 104 do ficheiro hash\_\-table.h.

Referências INIT\_\-LIST\_\-HEAD, hash\_\-entry::key, hash\_\-entry::keylen e hash\_\-entry::list.

Referenciado por hash\_\-table\_\-init(), hash\_\-table\_\-insert() e hash\_\-table\_\-insert\_\-safe().\hypertarget{hash__table_8h_e9600b4d6f7ce6395d53b2858953c76f}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-bucket\_\-lock@{hash\_\-table\_\-bucket\_\-lock}}
\index{hash\_\-table\_\-bucket\_\-lock@{hash\_\-table\_\-bucket\_\-lock}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-bucket\_\-lock]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-bucket\_\-lock (struct {\bf hash\_\-table} $\ast$ {\em t}, \/  unsigned int {\em n})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_e9600b4d6f7ce6395d53b2858953c76f}




Definido na linha 43 do ficheiro hash\_\-table.h.

Referências hash\_\-table::bucket\_\-locks.

Referenciado por hash\_\-table\_\-del\_\-key\_\-safe(), hash\_\-table\_\-insert\_\-safe() e hash\_\-table\_\-lookup\_\-key\_\-safe().\hypertarget{hash__table_8h_2c3068f078190c2b4d9416576a30f548}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-bucket\_\-locked@{hash\_\-table\_\-bucket\_\-locked}}
\index{hash\_\-table\_\-bucket\_\-locked@{hash\_\-table\_\-bucket\_\-locked}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-bucket\_\-locked]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-bucket\_\-locked (struct {\bf hash\_\-table} $\ast$ {\em t}, \/  unsigned int {\em n})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_2c3068f078190c2b4d9416576a30f548}




Definido na linha 74 do ficheiro hash\_\-table.h.\hypertarget{hash__table_8h_48f875515f654fd00e016384de1f14d9}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-bucket\_\-unlock@{hash\_\-table\_\-bucket\_\-unlock}}
\index{hash\_\-table\_\-bucket\_\-unlock@{hash\_\-table\_\-bucket\_\-unlock}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-bucket\_\-unlock]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-bucket\_\-unlock (struct {\bf hash\_\-table} $\ast$ {\em t}, \/  unsigned int {\em n})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_48f875515f654fd00e016384de1f14d9}




Definido na linha 48 do ficheiro hash\_\-table.h.

Referências hash\_\-table::bucket\_\-locks.

Referenciado por hash\_\-table\_\-del\_\-key\_\-safe(), hash\_\-table\_\-insert\_\-safe() e hash\_\-table\_\-lookup\_\-key\_\-safe().\hypertarget{hash__table_8h_3577eebac3c7b1338dc8b0bded0441ab}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-del\_\-hash\_\-entry@{hash\_\-table\_\-del\_\-hash\_\-entry}}
\index{hash\_\-table\_\-del\_\-hash\_\-entry@{hash\_\-table\_\-del\_\-hash\_\-entry}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-del\_\-hash\_\-entry]{\setlength{\rightskip}{0pt plus 5cm}static struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-del\_\-hash\_\-entry (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  struct {\bf hash\_\-entry} $\ast$ {\em e})\hspace{0.3cm}{\tt  \mbox{[}static, read\mbox{]}}}}
\label{hash__table_8h_3577eebac3c7b1338dc8b0bded0441ab}




Definido na linha 317 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-del\_\-key(), hash\_\-entry::key e hash\_\-entry::keylen.\hypertarget{hash__table_8h_1e29b091dbabf9bdf181bd5ee7162162}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe@{hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe}}
\index{hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe@{hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}static struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  struct {\bf hash\_\-entry} $\ast$ {\em e})\hspace{0.3cm}{\tt  \mbox{[}static, read\mbox{]}}}}
\label{hash__table_8h_1e29b091dbabf9bdf181bd5ee7162162}




Definido na linha 323 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-del\_\-key\_\-safe(), hash\_\-entry::key e hash\_\-entry::keylen.\hypertarget{hash__table_8h_41c85ba1ce95224217a063dc322f815c}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-del\_\-key@{hash\_\-table\_\-del\_\-key}}
\index{hash\_\-table\_\-del\_\-key@{hash\_\-table\_\-del\_\-key}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-del\_\-key]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-del\_\-key (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const char $\ast$ {\em str}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{hash__table_8h_41c85ba1ce95224217a063dc322f815c}




Definido na linha 288 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-lookup\_\-key(), hash\_\-entry::list e list\_\-del\_\-init().

Referenciado por hash\_\-table\_\-del\_\-hash\_\-entry().\hypertarget{hash__table_8h_700e46956ce396aebc18e2dc902d072a}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-del\_\-key\_\-safe@{hash\_\-table\_\-del\_\-key\_\-safe}}
\index{hash\_\-table\_\-del\_\-key\_\-safe@{hash\_\-table\_\-del\_\-key\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-del\_\-key\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-del\_\-key\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const char $\ast$ {\em str}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{hash__table_8h_700e46956ce396aebc18e2dc902d072a}




Definido na linha 300 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-bucket\_\-lock(), hash\_\-table\_\-bucket\_\-unlock(), hash\_\-table\_\-hash\_\-code(), hash\_\-table\_\-lookup\_\-key(), hash\_\-entry::list e list\_\-del\_\-init().

Referenciado por hash\_\-table\_\-del\_\-hash\_\-entry\_\-safe().\hypertarget{hash__table_8h_506d39e2faf00001f5354fd67ffaf590}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-finit@{hash\_\-table\_\-finit}}
\index{hash\_\-table\_\-finit@{hash\_\-table\_\-finit}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-finit]{\setlength{\rightskip}{0pt plus 5cm}static void hash\_\-table\_\-finit (struct {\bf hash\_\-table} $\ast$ {\em h})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_506d39e2faf00001f5354fd67ffaf590}




Definido na linha 158 do ficheiro hash\_\-table.h.

Referências hash\_\-table::buckets e hash\_\-table::table.

Referenciado por main().\hypertarget{hash__table_8h_b80477ad6e8ad63b4ea83252c67392f1}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-hash\_\-code@{hash\_\-table\_\-hash\_\-code}}
\index{hash\_\-table\_\-hash\_\-code@{hash\_\-table\_\-hash\_\-code}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-hash\_\-code]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-hash\_\-code (const struct {\bf hash\_\-table} $\ast$ {\em t}, \/  const char $\ast$ {\em key}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_b80477ad6e8ad63b4ea83252c67392f1}




Definido na linha 85 do ficheiro hash\_\-table.h.

Referências \_\-\_\-hash() e hash\_\-table::buckets.

Referenciado por hash\_\-table\_\-del\_\-key\_\-safe(), hash\_\-table\_\-insert(), hash\_\-table\_\-lookup\_\-key() e main().\hypertarget{hash__table_8h_fb170aef9a24093e681f4f136f5fc404}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-hash\_\-code\_\-safe@{hash\_\-table\_\-hash\_\-code\_\-safe}}
\index{hash\_\-table\_\-hash\_\-code\_\-safe@{hash\_\-table\_\-hash\_\-code\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-hash\_\-code\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-hash\_\-code\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em t}, \/  const char $\ast$ {\em key}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_fb170aef9a24093e681f4f136f5fc404}




Definido na linha 92 do ficheiro hash\_\-table.h.

Referências \_\-\_\-hash(), hash\_\-table::buckets, hash\_\-table\_\-lock() e hash\_\-table\_\-unlock().

Referenciado por hash\_\-table\_\-insert\_\-safe() e hash\_\-table\_\-lookup\_\-key\_\-safe().\hypertarget{hash__table_8h_7e37848bc7e0e4fe223f633949331aa4}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-init@{hash\_\-table\_\-init}}
\index{hash\_\-table\_\-init@{hash\_\-table\_\-init}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-init]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-init (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  unsigned int {\em b}, \/  {\bf keycmp\_\-ptr} {\em keycmp})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_7e37848bc7e0e4fe223f633949331aa4}




Definido na linha 126 do ficheiro hash\_\-table.h.

Referências hash\_\-table::bucket\_\-locks, hash\_\-table::buckets, hash\_\-entry\_\-init(), hash\_\-table::keycmp, hash\_\-table::lock e hash\_\-table::table.

Referenciado por main().\hypertarget{hash__table_8h_b169c085175842723f0b8ef86d138f0c}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-insert@{hash\_\-table\_\-insert}}
\index{hash\_\-table\_\-insert@{hash\_\-table\_\-insert}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-insert]{\setlength{\rightskip}{0pt plus 5cm}void hash\_\-table\_\-insert (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  struct {\bf hash\_\-entry} $\ast$ {\em e}, \/  const unsigned char $\ast$ {\em key}, \/  unsigned int {\em len})}}
\label{hash__table_8h_b169c085175842723f0b8ef86d138f0c}




Definido na linha 171 do ficheiro hash\_\-table.h.

Referências hash\_\-entry\_\-init(), hash\_\-table\_\-hash\_\-code(), hash\_\-entry::list, list\_\-add() e hash\_\-table::table.

Referenciado por main().\hypertarget{hash__table_8h_fce52c7df56ac3debdbeb4cdd767823f}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-insert\_\-safe@{hash\_\-table\_\-insert\_\-safe}}
\index{hash\_\-table\_\-insert\_\-safe@{hash\_\-table\_\-insert\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-insert\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}void hash\_\-table\_\-insert\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  struct {\bf hash\_\-entry} $\ast$ {\em e}, \/  const unsigned char $\ast$ {\em key}, \/  unsigned int {\em len})}}
\label{hash__table_8h_fce52c7df56ac3debdbeb4cdd767823f}




Definido na linha 189 do ficheiro hash\_\-table.h.

Referências hash\_\-entry\_\-init(), hash\_\-table\_\-bucket\_\-lock(), hash\_\-table\_\-bucket\_\-unlock(), hash\_\-table\_\-hash\_\-code\_\-safe(), hash\_\-entry::list, list\_\-add() e hash\_\-table::table.\hypertarget{hash__table_8h_6ee43184883ee97c4f19b4e85549b5dc}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-lock@{hash\_\-table\_\-lock}}
\index{hash\_\-table\_\-lock@{hash\_\-table\_\-lock}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-lock]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-lock (struct {\bf hash\_\-table} $\ast$ {\em t})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_6ee43184883ee97c4f19b4e85549b5dc}




Definido na linha 53 do ficheiro hash\_\-table.h.

Referências hash\_\-table::lock.

Referenciado por hash\_\-table\_\-hash\_\-code\_\-safe().\hypertarget{hash__table_8h_0ddc013a986dacb55b81875438bc2e0a}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-locked@{hash\_\-table\_\-locked}}
\index{hash\_\-table\_\-locked@{hash\_\-table\_\-locked}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-locked]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-locked (struct {\bf hash\_\-table} $\ast$ {\em t})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_0ddc013a986dacb55b81875438bc2e0a}




Definido na linha 79 do ficheiro hash\_\-table.h.\hypertarget{hash__table_8h_251fb227e81f38d9c3526696e760ca31}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-lookup\_\-hash\_\-entry@{hash\_\-table\_\-lookup\_\-hash\_\-entry}}
\index{hash\_\-table\_\-lookup\_\-hash\_\-entry@{hash\_\-table\_\-lookup\_\-hash\_\-entry}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-lookup\_\-hash\_\-entry]{\setlength{\rightskip}{0pt plus 5cm}static struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-lookup\_\-hash\_\-entry (const struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const struct {\bf hash\_\-entry} $\ast$ {\em e})\hspace{0.3cm}{\tt  \mbox{[}static, read\mbox{]}}}}
\label{hash__table_8h_251fb227e81f38d9c3526696e760ca31}




Definido na linha 269 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-lookup\_\-key(), hash\_\-entry::key e hash\_\-entry::keylen.\hypertarget{hash__table_8h_652be46a5fbf96645b384492f8c04644}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe@{hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe}}
\index{hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe@{hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}static struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const struct {\bf hash\_\-entry} $\ast$ {\em e})\hspace{0.3cm}{\tt  \mbox{[}static, read\mbox{]}}}}
\label{hash__table_8h_652be46a5fbf96645b384492f8c04644}




Definido na linha 281 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-lookup\_\-key\_\-safe(), hash\_\-entry::key e hash\_\-entry::keylen.\hypertarget{hash__table_8h_26234bcfb00e679df2eb4b8e1476a9d5}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-lookup\_\-key@{hash\_\-table\_\-lookup\_\-key}}
\index{hash\_\-table\_\-lookup\_\-key@{hash\_\-table\_\-lookup\_\-key}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-lookup\_\-key]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-lookup\_\-key (const struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const unsigned char $\ast$ {\em str}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{hash__table_8h_26234bcfb00e679df2eb4b8e1476a9d5}




Definido na linha 213 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-hash\_\-code(), hash\_\-entry::key, hash\_\-table::keycmp, hash\_\-entry::keylen, hash\_\-entry::list, list\_\-entry, list\_\-for\_\-each e hash\_\-table::table.

Referenciado por hash\_\-table\_\-del\_\-key(), hash\_\-table\_\-del\_\-key\_\-safe(), hash\_\-table\_\-lookup\_\-hash\_\-entry() e main().\hypertarget{hash__table_8h_c20b239fac318b4a3f07951f67443485}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-lookup\_\-key\_\-safe@{hash\_\-table\_\-lookup\_\-key\_\-safe}}
\index{hash\_\-table\_\-lookup\_\-key\_\-safe@{hash\_\-table\_\-lookup\_\-key\_\-safe}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-lookup\_\-key\_\-safe]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf hash\_\-entry}$\ast$ hash\_\-table\_\-lookup\_\-key\_\-safe (struct {\bf hash\_\-table} $\ast$ {\em h}, \/  const unsigned char $\ast$ {\em str}, \/  unsigned int {\em len})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{hash__table_8h_c20b239fac318b4a3f07951f67443485}




Definido na linha 241 do ficheiro hash\_\-table.h.

Referências hash\_\-table\_\-bucket\_\-lock(), hash\_\-table\_\-bucket\_\-unlock(), hash\_\-table\_\-hash\_\-code\_\-safe(), hash\_\-entry::key, hash\_\-entry::keylen, hash\_\-entry::list, list\_\-entry, list\_\-for\_\-each e hash\_\-table::table.

Referenciado por hash\_\-table\_\-lookup\_\-hash\_\-entry\_\-safe().\hypertarget{hash__table_8h_21dc15c7b9538d15e19afffca43d9053}{
\index{hash\_\-table.h@{hash\_\-table.h}!hash\_\-table\_\-unlock@{hash\_\-table\_\-unlock}}
\index{hash\_\-table\_\-unlock@{hash\_\-table\_\-unlock}!hash_table.h@{hash\_\-table.h}}
\subsubsection[hash\_\-table\_\-unlock]{\setlength{\rightskip}{0pt plus 5cm}static int hash\_\-table\_\-unlock (struct {\bf hash\_\-table} $\ast$ {\em t})\hspace{0.3cm}{\tt  \mbox{[}inline, static\mbox{]}}}}
\label{hash__table_8h_21dc15c7b9538d15e19afffca43d9053}




Definido na linha 58 do ficheiro hash\_\-table.h.

Referências hash\_\-table::lock.

Referenciado por hash\_\-table\_\-hash\_\-code\_\-safe().